home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib12.dsk / TINY TYPER.bas < prev   
BASIC Source File  |  2023-02-26  |  7KB  |  153 lines

  1. 1  REM  ***********************
  2. 2  REM  *  NIBBLE TINY TYPER  *
  3. 3  REM  *   BY GLENN TEMAN    *
  4. 4  REM  * COPYRIGHT (C) 1983  *
  5. 5  REM  * BY MICROSPARC, INC. *
  6. 6  REM  * LINCOLN, MA. 01773  *
  7. 7  REM  ***********************
  8. 8  GOTO 60000
  9. 9  REM  .. GETLN
  10. 10  REM  ..GETLN..
  11. 20 B$ = "":S = 1: NORMAL : PRINT "> ";: FOR I = 1 TO 300: GET A$:A =  ASC(A$): IF A = 13  THEN 100
  12. 30  IF A = 27  THEN S =  ABS(S -1): INVERSE : IF S  THEN  NORMAL 
  13. 50  IF A = 8  THEN C =  LEN(B$): IF C >1  THEN B$ =  LEFT$(B$, LEN(B$) -1): PRINT A$;: GOTO 90
  14. 60  IF A = 8  THEN B$ = "": PRINT A$;: GOTO 90
  15. 70  PRINT A$;:B = 0: IF A >64  AND A <91  THEN B = 1
  16. 80  IF A >31  THEN B$ = B$ + CHR$(A +S *32 *B)
  17. 90  NEXT 
  18. 100  CALL  -868: PRINT :I$ = B$: NORMAL 
  19. 110  RETURN 
  20. 200  REM  ..CMDS..
  21. 210  GOSUB 10:A$ =  LEFT$(I$,1): IF  LEN(I$) = 1  OR A$ = "+"  OR A$ = "-"  OR A$ = ">"  THEN  GOSUB 300: GOTO 200
  22. 220  IF I$ = ""  THEN  GOSUB 400: GOTO 200
  23. 230 LP = LP +1:LL = LL +1: IF L$(LP) = ""  THEN L$(LP) = I$: GOSUB 600: GOTO 200
  24. 240  GOSUB 550: GOTO 200
  25. 300  REM  ..INTERP..
  26. 310  IF I$ = "."  THEN  POP : GOTO 2400
  27. 315 A =  ASC(A$): IF A >96  THEN A$ =  CHR$(A -32):I$ = A$
  28. 320  FOR I = 1 TO 14: IF A$ =  MID$ ("*+=->CEFPSTLK?",I,1)  THEN 350
  29. 330  NEXT 
  30. 340 A$ = "SYNTX": GOSUB 800: RETURN 
  31. 350  ON I GOSUB 700,650,750,650,1100,1200,1050,2250,1000,1150,2000,2150,2350,2600
  32. 360  RETURN 
  33. 400  REM  ..EDIT..
  34. 405 C$ =  CHR$(101) + CHR$(110) + CHR$(100): IF LL <1  THEN  RETURN 
  35. 410  HTAB 5: PRINT "R";: GOSUB 10: IF I$ = ""  THEN B$ = L$(LP): GOSUB 500: RETURN 
  36. 415 L =  LEN(I$):N$ = L$(LP): IF I$ = C$  THEN I =  LEN(N$) +1: GOTO 450
  37. 420  FOR I = 1 TO  LEN(N$): IF I$ =  MID$ (N$,I,L)  THEN 450
  38. 430  NEXT 
  39. 440 A$ = "WHERE?": GOSUB 800: RETURN 
  40. 450  HTAB 5:J = I: PRINT "W";: GOSUB 10: IF J = 1  THEN L$(LP) = I$ + MID$ (N$,L +1,99):B$ = L$(LP): GOSUB 500: RETURN 
  41. 460 L$(LP) =  MID$ (N$,1,J -1) +I$ + MID$ (N$,J +L,99):B$ = L$(LP): GOSUB 500
  42. 470  RETURN 
  43. 500  REM  ..PRNTLN..
  44. 505  IF LP = 0  THEN  RETURN 
  45. 510  FOR I = 1 TO  LEN(B$):A$ =  MID$ (B$,I,1):A =  ASC(A$): INVERSE : IF A <65  OR A >90  THEN  NORMAL : IF A >96  THEN A$ =  CHR$(A -32)
  46. 520  PRINT A$;: NEXT : NORMAL : PRINT : RETURN 
  47. 550  REM  ..PUSH DN..
  48. 560  FOR I = LL TO LP  STEP  -1:L$(I +1) = L$(I): NEXT :L$(LP) = I$: GOSUB 600: RETURN 
  49. 600  REM  ..OUT OF ROOM..
  50. 610  IF LL <SZ  THEN  RETURN 
  51. 620 A$ = "OUT OF SPACE": GOSUB 8700: RETURN 
  52. 650  REM  ..+ OR -..
  53. 655  IF I$ = "+"  OR I$ = "-"  THEN I$ = I$ +"1"
  54. 660 I =  VAL(I$) +LP: IF I >LL  OR I <1  THEN A$ = "RANGE": GOSUB 800: RETURN 
  55. 670 LP = I:J = 0:B$ = L$(LP): GOSUB 500: RETURN 
  56. 700  REM  ..*..
  57. 710  FOR I = LP TO LL:L$(I) = L$(I +1): NEXT :LL = LL -1:LP = LP -1: RETURN 
  58. 750  REM  ..=..
  59. 760 A$ =  STR$(LP): GOSUB 800: RETURN 
  60. 800  REM  ..ERROR..
  61. 810  FLASH : PRINT " <"A$">";: NORMAL : PRINT  CHR$(7): FOR I = 1 TO 1000: NEXT : VTAB  PEEK(37): HTAB 1: CALL  -868: RETURN 
  62. 850  REM  ..GET RANGE..
  63. 860  PRINT  LEFT$(I$,1)"  ";: INPUT "FROM: ";S$: VTAB  PEEK(37): HTAB 20: INPUT "TO: ";E$
  64. 900  IF S$ = ""  THEN S$ =  STR$(LP)
  65. 910  IF E$ = ""  THEN E$ =  STR$(LP)
  66. 920  IF S$ = "S"  THEN S$ = "1"
  67. 930  IF E$ = "E"  THEN E$ =  STR$(LL)
  68. 940 S =  VAL(S$):E =  VAL(E$): IF S >E  OR S >LL  OR E <1  OR S <1  OR E >LL  THEN 960
  69. 950  RETURN 
  70. 960 A$ = "RANGE": GOSUB 800: POP : RETURN 
  71. 1000  REM  ..PRINT..
  72. 1010  GOSUB 850: FOR J = S TO E:B$ = L$(J): PRINT J" ";: GOSUB 500: NEXT : RETURN 
  73. 1050  REM  ..ERASE..
  74. 1060  GOSUB 850: PRINT "<ERASE "S" TO "E;: INPUT ": ARE YOU SURE? ";A$: IF LFET$(A$,1) = "N"  THEN  RETURN 
  75. 1070 A = 0: FOR I = S TO LL -(2 -S +1):A = A +1:L$(I) = L$(E +A): NEXT :LL = LL -(E -S +1): IF LP >LL  THEN LP = LL
  76. 1080  RETURN 
  77. 1100  REM  ..>..
  78. 1105  IF I$ = ">" + CHR$(101)  THEN LP = LL: RETURN 
  79. 1110 J =  VAL( MID$ (I$,2,9)): IF J >LL  OR J <1  THEN A$ = "RANGE": GOSUB <CTRL-K>800: RETURN 
  80. 1120 LP = J: RETURN 
  81. 1150  REM  ..SPACE..
  82. 1160 A$ = "SPACE LEFT=" + STR$(SZ -LL): GOSUB 800:I =  FRE(0): RETURN 
  83. 1200  REM  ..COMPACT..
  84. 1210  GOSUB 850: PRINT "<COMPACT "S" TO "E;: INPUT ": ARE YOU SURE? ";A$: IF  LEFT$(A$,1) < >"Y"  THEN  RETURN 
  85. 1212  INPUT "LINE LENGTH? 70// ";A$:LN =  VAL(A$): IF LN >130  OR LN <31  THEN LN = 70
  86. 1220 B$ = "":A = S: FOR I = S TO E:A$ = L$(I):A$ = B$ +A$:C = LN -30: IF  LEN(A$) <LN -10  THEN B$ = A$ +" ": GOTO 1280
  87. 1240  FOR J = LN TO LN -30  STEP  -1: IF  MID$ (A$,J,1) = " "  THEN C = J:J = LN -31
  88. 1260  NEXT 
  89. 1270 B$ =  MID$ (A$,C +1,99) +" ":A$ =  MID$ (A$,1,C -1):L$(A) = A$:A = A +1
  90. 1280  NEXT 
  91. 1285  IF B$ < >" "  THEN L$(A) =  LEFT$(B$, LEN(B$) -1):A = A +1
  92. 1290 S = A: GOSUB 1070: RETURN 
  93. 2000  REM  ..TYPE..
  94. 2010  PRINT "FORMATTED PRINT: ARE YOU ";: INPUT "SURE? ";A$: IF  LEFT$(A$,1) = "N"  THEN  RETURN 
  95. 2020 C = 0: PRINT D$;"PR#1": PRINT  CHR$(9)"80N"
  96. 2025  FOR J = 1 TO LL:B$ = L$(J):A =  ASC( LEFT$(B$,1))
  97. 2030 S = 0: IF A = 39  THEN  GOSUB 2500: IF S  THEN 2080
  98. 2040  PRINT B$
  99. 2080  NEXT 
  100. 2085  IF C  THEN C = 0: GOTO 2025
  101. 2090  PRINT D$;"PR#0": PRINT "<DONE.>"
  102. 2100  RETURN 
  103. 2150  REM  ..LOAD..
  104. 2160  INPUT "LOAD FILE: ";A$: PRINT : IF A$ = ""  THEN  RETURN 
  105. 2170  PRINT D$;"OPEN";A$
  106. 2180  PRINT D$;"READ";A$
  107. 2190 C$ =  CHR$(13):I$ = "": INPUT LL: FOR I = 1 TO LL: FOR J = 1 TO 200: GET B$: IF B$ = C$  THEN L$(I) = I$:J = 201
  108. 2200 I$ = I$ +B$
  109. 2210  NEXT :I$ = ""
  110. 2220  NEXT 
  111. 2230  PRINT C$;D$;"CLOSE";A$
  112. 2240 LP = 1: RETURN 
  113. 2250  REM  ..FILE..
  114. 2260  INPUT "FILE NAME: ";A$: IF A$ = ""  THEN  RETURN 
  115. 2270  PRINT D$;"OPEN";A$
  116. 2280  PRINT D$;"WRITE";A$
  117. 2290  PRINT LL: FOR I = 1 TO LL: PRINT L$(I): NEXT 
  118. 2300  PRINT D$;"CLOSE";A$
  119. 2310  RETURN 
  120. 2350  REM  ..KATALOG..
  121. 2360  PRINT : PRINT D$;"CATALOG"
  122. 2370  RETURN 
  123. 2400  REM  ..QUIT..
  124. 2410  INPUT "QUIT? ";A$: IF  LEFT$(A$,1) < >"Y"  THEN 200
  125. 2420  PRINT : POKE 34,0: HOME : PRINT "<BYE>": PRINT : END 
  126. 2500  REM  ..APOSTROPHE..
  127. 2510 A$ =  MID$ (B$,2,1): IF A$ = "P"  THEN  PRINT  CHR$(12):S = 1: RETURN 
  128. 2520  IF A$ = "A"  THEN  GOSUB 2700:S = 1:J = SZ:C = 1: RETURN 
  129. 2530  IF A$ = "?"  THEN  GOSUB 2750: RETURN 
  130. 2535  IF A$ = "C"  THEN S = 1: RETURN 
  131. 2540  RETURN 
  132. 2600  REM  ..?..
  133. 2605  PRINT : INVERSE : PRINT " COMMANDS: ": NORMAL 
  134. 2610  PRINT "*   DELETE CURRENT LINE": PRINT "+N  MOVE LP DOWN N LINES"
  135. 2620  PRINT "-N  MOVE LP UP N LINES": PRINT "=   DISPLAY CURRENT LINE #"
  136. 2630  PRINT ">N  MOVE LP TO LINE N": PRINT "C   COMPACT": PRINT "E   ERASE": PRINT "F   FILE": PRINT "P   PRINT"
  137. 2640  PRINT "S   SPACE LEFT-LINES": PRINT "T   TYPE ON PRINTER-SLOT 1"
  138. 2650  PRINT "L   LOAD": PRINT "K   CATALOG": PRINT "?   LIST COMMANDS": PRINT ".   QUIT"
  139. 2660  PRINT : RETURN 
  140. 2700  REM  ..'A..
  141. 2710 A$ =  MID$ (B$,4,99): GOSUB 2170: RETURN 
  142. 2750  REM  ..'?..
  143. 2760  FOR A = 3 TO 10: IF  MID$ (B$,A,1) = " "  THEN 2780
  144. 2770  NEXT 
  145. 2780  PRINT  TAB(  VAL( MID$ (B$,3,A -3)));:B$ =  MID$ (B$,A +1,199)
  146. 2790  RETURN 
  147. 60000  REM  ..INIT..
  148. 60010 SZ = 300:LL = 0:LP = 0:D$ =  CHR$(4)
  149. 60020  DIM L$(SZ)
  150. 60030  HOME : PRINT  TAB( 8)"** NIBBLE TINY TYPER **"
  151. 60035  PRINT 
  152. 60040  POKE 34,2
  153. 60050  GOTO 200